package com.gko100.service;

import java.util.List;


import com.gko100.model.Administrator;
import com.gko100.model.Article;

import com.gko100.model.AdminPerm;
import com.gko100.model.Category;
import com.gko100.model.Disease;
import com.gko100.model.Image;
import com.gko100.model.Language;
import com.gko100.model.Message;
import com.gko100.model.Navigation;
import com.gko100.model.Permission;
import com.gko100.model.User;
import com.gko100.model.UserPerm;

public interface AdminManager {
	
	int LIST_PAGE_SIZE=10;
	int getAdminCount();
	int getImageCount();
	int getArtiCount(Navigation nav);
	int getPageCount(int count, int pageSize);
	
	/**
	 * @note (登录验证)
	 * @param (Administrator admin)
	 * @return (boolean类型)
	 */
	boolean validLogin(Administrator admin);
	
	/**
	 * @note (退出处理)
	 * @param (Administrator admin)
	 * @return ()
	 */
	void logout(Administrator admin);
	
	
	//管理员信息管理	
	/**
	 * @note (添加管理员)
	 * @param (Administrator admin)
	 * @return ()
	 */
	void add_admin(Administrator admin);
	
	/**
	 * @note (根据adminId删除管理员)
	 * @param (Integer adminId)
	 * @return ()
	 */
	void del_adminByAdminId(Integer adminId);
	
	/**
	 * @note (根据更新管理员信息)
	 * @param (Integer adminId)
	 * @return ()
	 */
	void modify_adminByAdmin(Administrator admin);
	
	/**
	 * @note (通过用户名查找管理员信息)
	 * @param (Administrator admin)
	 * @return ()
	 */
	Administrator findAdminByName(String name);
	
	/**
	 * @note (通过用户名密码查找管理员)
	 * @param (Administrator admin)
	 * @return ()
	 */
	Administrator findAdminByNameAndPass(String name, String password);
	
	/**
	 * @note (查找所有管理员,分页管理)
	 * @param (Administrator admin)
	 * @return ()
	 */
	List<Administrator> findAdminListAllByPage(int pageNo);
	
	/**
	 * @note (根据adminId查找管理员)
	 * @param (Integer adminId)
	 * @return (Administrator admin)
	 */
	Administrator findAdminByAdminId(Integer imgId);
	
	/*
	 * 权限信息管理
	 */

	/**
	 * @note (查找权限分类信息)
	 * @param (Integer adminId)
	 * @return (List<Permission>)
	 */
	List<Permission> findPermList();
	
	/**
	 * @note (添加权限分类)
	 * @param (Permission perm)
	 * @return ()
	 */
	void add_perm(Permission perm);
	
	/**
	 * @note (根据permId删除权限分类)
	 * @param (Integer permId)
	 * @return ()
	 */
	void del_permByPermId(Integer permId);
	
	/**
	 * @note (根据permId更新权限分类)
	 * @param (Integer permId)
	 * @return ()
	 */
	void modify_permByPermId(Integer permId);
	
	
	/*
	 * 管理员权限管理
	 */

	/**
	 * @note (根据adminId查找用户权限信息)
	 * @param (Integer adminId)
	 * @return (List<AdminPerm>)
	 */
	List<AdminPerm> findAdminPermListByAdminId(Integer adminId);
	
	/**
	 * @note (添加用户时，为用户添加权限)
	 * @param (Administrator admin)
	 * @return ()
	 */
	void add_adminPerm(Administrator admin);
	
	/**
	 * @note (删除用户时，根据adminId删除用户权限)
	 * @param (Integer adminId)
	 * @return ()
	 */
	void del_adminPermByAdminId(Integer adminId);
	
	/**
	 * @note (根据adminId更新用户权限)
	 * @param (Integer adminId)
	 * @return ()
	 */
	void modify_adminPermByAdminPermId(int adminId,Integer[] permIdList);
	
	AdminPerm findAdminPermByAdminPermId(Integer adminPermId);
	
	/*
	 * ---------------会员信息模块---------------
	 * ---------------包括会员信息管理、会员信息添加、会员权限3部分
	 */
	
	void add_user(User user);
	void modify_user(User user);
	void del_user(User user);
	User findUserById(Integer userId);
	List<User> findUserAll();
	
	void add_userPerm(UserPerm userPerm);
	void add_userPermByUser(User user);
	void modify_userPermByUser(User user, Integer[] permIdList);
	void del_userPermByUser(User user);
	List<UserPerm> findUserPermListByUser(User user);
	
	
	
	
	
	
	/*
	 *  -------------------系统模块处理------------------                        
	 *  -------------------包括用户中心、系统管理、网站管理、留言信箱4部分
	 */
	
	void add_cate(Category cate);
	void del_cate(Category cate);
	void modify_cate(Category cate);
	Category findCateByCateId(Integer cateId);
	List<Category> findCateListByCatePid(Integer catePid);
	List<Category> findCateAll();
	Category findCateByCateNote(String cateNote);
	
	
	
	
	/*
	 * 分类信息管理
	 */
	
	/**
	 * @note (添加导航信息)
	 * @param (Navigation nav)
	 * @return ()
	 */
	void add_nav(Navigation nav);
	
	/**
	 * @note (删除导航信息)
	 * @param (Navigation nav)
	 * @return ()
	 */
	void del_nav(Navigation nav);
	
	/**
	 * @note (更新导航信息)
	 * @param (Navigation nav)
	 * @return ()
	 */
	void modify_navByNav(Navigation nav);
	
	
	
	/**
	 * @note (查询所有导航信息)
	 * @param ()
	 * @return (List<Navigation>)
	 */
	List<Navigation> findNavListByCate(Category cate);
	
	Navigation findNavByCate(Category cate);
	
	Navigation findNavByNavNote(String navNote);
	
	/**
	 * @note (根据navId查询导航信息)
	 * @param (Integer navId)
	 * @return (Navigation)
	 */
	Navigation findNavByNavId(Integer navId);
	
	/**
	 * @note (根据navPid查询导航信息)
	 * @param (Integer navPid)
	 * @return (List<Navigation>)
	 */
	List<Navigation> findNavListByNavPId(Integer navPid);
	
	/**
	 * @note (根据navPid,langId查询导航信息)
	 * @param (Integer navPid)
	 * @return (List<Navigation>)
	 */
	List<Navigation> findNavListByNavPIdAndLangId(Integer navPid,Integer langId);
	
	/**
	 * @note (根据navName查询导航信息)
	 * @param (String navName)
	 * @return (Navigation)
	 */
	Navigation findNavByNavName(String navName);
	
	
	/*
	 * 图片信息管理
	 */
	
	/**
	 * @note (添加图片)
	 * @param (Image image)
	 * @return ()
	 */
	void add_image(Image image);
	
	/**
	 * @note (删除图片)
	 * @param (Image image)
	 * @return ()
	 */
	
	void cdel_imageByImage(Image image);
	
	void del_imageByImage(Image image);
	
	/**
	 * @note (更新图片)
	 * @param (Image image)
	 * @return ()
	 */
	void modify_imageByImage(Image image);
	
	/**
	 * @note (查询所有图片)
	 * @param ()
	 * @return (List<Image>)
	 */
	List<Image> findImgAll();
	
	/**
	 * @note (查找所有图片,分页管理)
	 * @param (int pageNo)
	 * @return ()
	 */
	List<Image> findImageListAllByPage(int pageNo);
	
	/**
	 * @note (根据imgId查询所有图片)
	 * @param (Integer imgId)
	 * @return (Image)
	 */
	Image findImgByImgId(Integer imgId);
	
	/**
	 * @note (根据导航分类查询所有图片)
	 * @param (Integer navPid)
	 * @return (List<Image>)
	 */
	List<Image> findImgListByNav(Navigation nav);
	
	/**
	 * @note (根据文章分类查询所有图片)
	 * @param (Article arti)
	 * @return (List<Image>)
	 */
	List<Image> findImageByArti(Article arti);
	
	List<Image> findImageListDelByArti(Article arti);
	
	/**
	 * @note (添加文章)
	 * @param (Integer navPid)
	 * @return ()
	 */
	void add_arti(Article arti);
	
	/**
	 * @note (删除文章信息)
	 * @param (Integer navPid)
	 * @return ()
	 */
	
	void del_arti(Article arti);
	
	void cdel_arti(Article arti);
	/**
	 * @note (根据artiId查找文章的分类信息)
	 * @param (Integer artiId)
	 * @return (Navigation)
	 */
	Navigation findNavByArtiId(Integer artiId);
	
	/**
	 * @note (更新文章信息)
	 * @param (Integer navPid)
	 * @return ()
	 */
	void modify_arti(Article arti);
	
	/**
	 * @note (根据artiId查找文章信息)
	 * @param (Integer artiId)
	 * @return (Article)
	 */
	Article findBackArtiByArtiId(Integer artiId);
	Article findArtiByArtiId(Integer artiId);
	
	/**
	 * @note (根据nav和lang查找所有文章)
	 * @param (Navigation nav, Language lang)
	 * @return (List<Article>)
	 */
	List<Article> findArtiListByNavAndLang(Navigation nav, Language lang, String sortParam);
	
	/**
	 * @note (根据navId查找当前分类下所有文章)
	 * @param (Integer navPid)
	 * @return (List<Image>)
	 */
	
	List<Article> findArtiListByNav(Navigation nav);
	
	List<Article> findArtiListByNavAndSortParam(Navigation nav, String sortParam);
	
	List<Article> findArtiListByDis(Disease disease);
	List<Article> findArtiListByDisAndNav(List<Disease> diseList, Navigation nav);
	
	List<Article> findArtiListByDisAndNote(Disease dise, String note);
	List<Article> findArtiListByDisListAndNote(List<Disease> diseList, String note);
	
	/**
	 * @note (根据navId查找当前分类下所有文章)
	 * @param (Integer navPid)
	 * @return (List<Image>)
	 */
	
	//后台---分类文章总数
	long find_backArtiTotalCountByNav(List<Navigation> navList);
	
	//前台---分类文章总数
	long find_artiTotalCountByNav(List<Navigation> navList);
	List<Article> findBackArtiListByNavAndPage(List<Navigation> navList, int offset, int pageSize);
	List<Article> findArtiListByNavAndPage(Navigation nav, int offset, int pageSize);
	
	//前台---查找分类下所有文章---分页
	List<Article> findArtiListByNavListAndPage(List<Navigation> navList, int offset, int pageSize);
	
	List<Article> findArtiFront(Navigation nav, Integer artiId, int offset, int pageSize);
	List<Article> findArtiNext(Navigation nav, Integer artiId, int offset, int pageSize);
	List<Article> findArtiListByNav(Navigation nav, int pageNo );
	List<Disease> findDiseListByArticle(Article arti);
	
	
	/**
	 * @note (根据langId查询所有语种)
	 * @param (Integer langId)
	 * @return (Language)
	 */
	Language findLangByLangId(Integer langId);
	Language findLangByLangName(String langName);
	List<Language> findLangListAll();
	
	
	
	
	/*
	 *  -------------------搜索模块------------------                        
	 *  -------------------关键字搜索
	 */
	long find_totalCountBySearchKey(String searchKey);
	List<Article> find_artiListBySearchKey(String searchKey);
	List<Article> find_artiListBySearchKeyAndPage(String searchKey, int offset, int pageSize);
	

	/*
	 *  -------------------留言信息模块------------------                        
	 *  -------------------包括留言管理1部分
	 */
	
	Message findMessageByMId(Integer mId);
	
	void add_message(Message message);

	void modify_message(Message message);
	
	void del_message(Message message);
	
	List<Message> findMessageAll();
	
	
	/*
	 *  -------------------疾病分类模块------------------                        
	 *  -------------------
	 */
	
	List<Disease> findDisListByDisPid(Integer disPid);
	
	List<Disease> findDisListByDisPidAndLang(Integer disPid,Language lang);
	
	Disease findDisByDisId(Integer diseaseId);
	
	Disease findDisByTitle(String title);
	
	void add_disease(Disease dis);
	
	void del_disease(Disease dis);
	
	void modify_disease(Disease dis);
	
	
	
	
	
	
	
}
